// 1.我们有一个json文件，可以读取文件中所有的信息;
// 2.把信息转换为对象，然后进行增删改查(四个方法);
// 3.最后把满足条件的数据，转换为json写入文件中;
// 导入fs模块, 和path模块
const fs = require('fs');
const path = require('path');
// 拼接json文件的绝对路径
const url = path.join(__dirname, './data.json');

// 获取数据 - 直接获取，不需要添加;
function getData() {
    // 这个方法是异步代码
    fs.readFile(url, 'utf8', (err, data) => {
        // 判断
        if (err) {
            return console.log(err.message);
        }
        // 输出结果 - 无法做到返回该函数外面
        let obj = JSON.parse(data);
        console.log(obj);
    });
}
// // 测试获取数据
// getData();

// 添加数据 - 数据以参数的形式传递给方法;(传递什么，添加什么)
function addData(obj) {
    // 1.获取信息
    fs.readFile(url, 'utf8', (err, data) => {
        // 判断
        if (err) return console.log(err.message);
        let arr = JSON.parse(data);
        // 2.操作 - 把一个图书信息对象，添加到数组中
        // 添加对象之前，生成id；(最后一项元素的id+1做新的id)
        obj.id = arr[arr.length-1].id + 1;
        arr.push(obj);
        // 3.写入
        fs.writeFile(url, JSON.stringify(arr), err => {
            // 判断
            if (err) return console.log(err.message);
            // 提示成功
            console.log('恭喜您，添加图书成功！');
        })
    })
}
// 测试添加 - id的值，不是调用方法的时候定义的;
addData({
    author: '刘慈欣',
    bookname: '三体3-黑暗森林',
    publisher: '武汉人民出版社'
});




function delData() {

}

function updateData() {

}
